#include<iostream>//低位优先基数排序
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
struct node
{
    string name,stu_id;
    int score,key;
}a[10001],t[15][10001];
int top[15];
void t_sort(int n)
{
    for(int i=1;i<=n;i++)
    {
        int bi=a[i].key%10;
        a[i].key/=10;
        t[bi][++top[bi]]=a[i];
    }
    int st=1;
    for(int b=0;b<=9;b++)
    {
        for(int i=1;i<=top[b];i++)
        {
            a[st++]=t[b][i];
        }
    }
}
int main()
{
    int n;
    cin>>n;
    int max=0;
    for(int i=1;i<=n;i++)
    {   
        cin>>a[i].stu_id>>a[i].name>>a[i].score;
        if(a[i].score>max)max=a[i].score;
        a[i].key=a[i].score;
    }
    cout<<endl;
    /*for(int i=1;i<=n;i++)
    {
        cout<<a[i].stu_id<<' '<<a[i].name<<' '<<a[i].score<<endl;
    }*/
    int x=1,time=1;
    while(max!=0)
    {
        max/=x;x*=10;time++;
    }
    time--;
    for(int i=1;i<=time;i++)
    {
        memset(top,0,sizeof(top));
        t_sort(n);
    }
    for(int i=1;i<=n;i++)
    {
        cout<<a[i].stu_id<<' '<<a[i].name<<' '<<a[i].score<<endl;
    }
    return 0;
}